package pl.edu.agh.inpema.core.model;

import pl.edu.agh.inpema.core.components.AnalyzerUtil;


public interface Analyzer {
	
	/**
	 * starts analyzer
	 */
	public void startAnalyzer();
	
	/**
	 * stops analyzer
	 * @return true if error(s) occurred, false if analyze was success
	 */
	public boolean stopAnalyzer();
	
	/**
	 * check if analyzer is running
	 * @return true if analyzer is running, false otherwise
	 */
	public boolean isAnalyzerRunning();
	
	/**
	 * compare two analyze results
	 * @param result1 first result
	 * @param result2 second result
	 * @return compare result: integer from 0 to 100 (100 means 100% probability that results are the same)
	 */
	public int compareResults(AnalyzeResult result1, AnalyzeResult result2);
	
	/**
	 * get analyzer data classes
	 * @return analyzer data classes
	 */
	public Class[] getDataClasses();
	
	/**
	 * sets the analyzer util
	 * @param analyzerUtil analyzer util
	 */
	public void setAnalyzerUtil(AnalyzerUtil analyzerUtil);
	
	/**
	 * get analyzer util
	 * @return analyzer util
	 */
	public AnalyzerUtil getAnalyzerUtil();
}
